python异常处理

对程序执行异常的处理机制,使程序能够应对意料之外的情况,提高用户体验。

异常处理的语法

1
2
3
4
5
# 捕获语句块1中的任何异常,采用语句块2进行处理
try :
<语句块1>
except :
<语句块2>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 依次捕获语句块1中的特定异常,采用语句块2--N进行处理
try :
<语句块1>
except Exception1 as e1:
<语句块2>
...
except ExceptionN as eN:
<语句块N>
else:
# 当try中<语句块1>未异常时的奖励
<语句块M>
finally:
# 一定会执行的内容
<语句块K>

简单实例

1
2
3
4
5
6
7
8
9
10
11
# 简单处理异常
def foo( a ):
try :
b = 10
b *= 100/ a
except ZeroDivisionError:
print("除数不为零")
return -1
except :
print("未知错误")
return -2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 当try-except-else-finally遇到函数
def f( a ):
try :
print(1/ a )
return 1/ a
except :
print("except")
return "except"
else :
print("else")
return "else"
finally :
print("finally")
return "finally"

# 无论return在哪里,finally一定执行
# finally中的return会覆盖之前所有return
# try中有return,else不执行

python定义的异常与错误

通过dir(__builtins__)可以看到内建的所有异常、内置函数

自定义异常:

Exception是python定义的类,通过继承可以自定义异常。

1
2
3
4
5
6
7
8
9
10
11
12
class MyException(Exception):
pass


try:
raise MyException()
except MyException:
print('捕获到了自定义异常MyException')

'''
捕获到了自定义异常MyException
'''